package com.cz.mydao.annotation;

import com.cz.mydao.constant.SqlKey;
import com.cz.mydao.enumeration.FillPolicy;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 功能描述: 表字段
 * @author: 程长
 * @date: 2024/12/23 18:10
 * @version: 1.0
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TableField {
    /**
     * 字段在数据库中的列名
     */
    String columnName() default "";

    /**
     * 字段在数据库中的数据类型
     */
    String fieldType() default "";

    /**
     * 是否允许为空
     */
    String isNullable() default SqlKey.NULL;

    /**
     * 是否select该列 默认为true
     * 比如用户密码一般不需要查询出来，可以设置为false，则查询结果将不返回该字段
     */
    boolean isSelect() default true;

    /**
     * 填充策略
     * INSERT: 在插入时自动填充
     * UPDATE: 在更新时自动填充
     * NONE: 不自动填充
     */
    FillPolicy fill() default FillPolicy.NONE;

    /**
     * 字段描述
     */
    String comment() default "";

}
